/*
 * BTStatistics.h
 *
 */

#ifndef BTSTATISTICS_H_
#define BTSTATISTICS_H_

#include <omnetpp.h>

namespace peermaliziosi {

class BTStatistics {

private:
    // NB: l'insieme dei seeder e dei downloader sono insieme disgiunti
    // numero di seeder
    static int numSeeder;
    // numero di downloader
    static int numDownloader;

    // numero totale di messaggi in volo, ovvero presenti nella nuvola. Solo msg Piece, Request, Cancel
    static int totMsgOnFly;
    // numero totale di byte in volo, ovvero presenti nella nuvola. Solo msg Piece, Request, Cancel
    static int totByteOnFly;

    // numero di messaggi Request totali presenti nella nuvola
    static int totRequest;
    // numero di messaggi Cancel totali presenti nella nuvola
    static int totCancel;
    // numero di messaggi Piece totali presenti nella nuvola
    static int totPiece;

public:
    BTStatistics();
    virtual ~BTStatistics();
    static int addNewSeeder(int peerID);
    static int delSeeder(int peerID);
    static int addNewDownloader(int peerID);
    static int delDownloader(int peerID);
    
    static int addMsgOnFly();
    static int delMsgOnFly();
    static int addByteOnFly(int byte);
    static int delByteOnFly(int byte);
    static int addCancelCloud();
    static int delCancelCloud();
    static int addRequestCloud();
    static int delRequestCloud();
    static int addPieceCloud();
    static int delPieceCloud();

    //static void initializeStatistics();
    //static void finishStatistics();

};

} /* namespace peermaliziosi */
#endif /* BTSTATISTICS_H_ */
